// 弹窗逻辑
// 在文件顶部定义测试函数，确保在控制台中可访问
window.testNotification = function() {
  // 检查 DOM 是否已加载
  if (document.readyState === 'loading') {
    // DOM 仍在加载中，等待加载完成
    document.addEventListener('DOMContentLoaded', function() {
      showNotification("Popup页面测试通知");
    });
  } else {
    // DOM 已加载完成，直接显示通知
    showNotification("Popup页面测试通知");
  }
};

// 定义显示通知函数
function showNotification(message) {
  // 创建提示框元素
  const notification = document.createElement('div');
  notification.innerText = message;
  notification.style.position = 'fixed';
  notification.style.top = '80px';
  notification.style.left = '50%';
  notification.style.transform = 'translateX(-50%)';
  notification.style.zIndex = '9999';
  notification.style.padding = '12px 24px';
  notification.style.backgroundColor = '#333';
  notification.style.color = 'white';
  notification.style.borderRadius = '6px';
  notification.style.boxShadow = '0 4px 12px rgba(0, 0, 0, 0.3)';
  notification.style.fontSize = '14px';
  notification.style.opacity = '0';
  notification.style.transition = 'opacity 0.3s ease, transform 0.3s ease';
  notification.style.textAlign = 'center';
  notification.style.minWidth = '300px';
  notification.style.maxWidth = '80%';
  notification.style.wordWrap = 'break-word';
  
  // 添加到页面
  document.body.appendChild(notification);
  
  // 显示提示框
  setTimeout(() => {
    notification.style.opacity = '1';
  }, 10);
  
  // 2秒后自动隐藏（原3秒，现在改为2秒）
  setTimeout(() => {
    notification.style.opacity = '0';
    
    // 动画结束后移除元素
    setTimeout(() => {
      if (notification.parentNode) {
        document.body.removeChild(notification);
      }
    }, 300);
  }, 2000);
}

// 显示保存的内容 (现在改为显示剪贴板内容)
async function showSavedContentInPopup() {
  try {
    // 读取剪贴板内容
    const clipboardContent = await navigator.clipboard.readText();
    
    // 检查剪贴板是否为空
    if (!clipboardContent || clipboardContent.trim() === "") {
      showNotification("剪贴板为空");
    } else {
      // 显示剪贴板内容，如果内容太长则截取
      let displayContent = clipboardContent;
      if (displayContent.length > 200) {
        displayContent = displayContent.substring(0, 200) + '...';
      }
      showNotification("剪贴板内容: " + displayContent);
    }
  } catch (error) {
    console.error("读取剪贴板内容时出错", error);
    showNotification("无法读取剪贴板内容: " + error.message);
  }
}

document.addEventListener('DOMContentLoaded', function() {
  const textInput = document.getElementById('textInput');
  const saveBtn = document.getElementById('saveBtn');
  const clearBtn = document.getElementById('clearBtn');
  const searchInput = document.getElementById('searchInput');
  const historyList = document.getElementById('historyList');
  
  // 新增的测试按钮
  const testAlt1Btn = document.getElementById('testAlt1Btn');
  const testAlt2Btn = document.getElementById('testAlt2Btn');
  const showProductIdBtn = document.getElementById('showProductIdBtn');
  const showSavedContentBtn = document.getElementById('showSavedContentBtn'); // 新增按钮
  
  // 商品ID测试元素
  const testProductIdInput = document.getElementById('testProductIdInput');
  const saveTestProductIdBtn = document.getElementById('saveTestProductIdBtn');
  const clearTestProductIdBtn = document.getElementById('clearTestProductIdBtn');
  
  // 商品ID显示元素
  const currentProductId = document.getElementById('currentProductId');
  
  // 日志开关
  const debugModeToggle = document.getElementById('debugModeToggle');
  const debugModeStatus = document.getElementById('debugModeStatus');
  
  // 页面加载时获取历史记录
  loadClipboardHistory();
  
  // 获取并显示日志开关状态
  getDebugModeStatus();
  
  // 获取并显示当前商品ID
  getCurrentProductId();
  
  // 保存按钮事件
  saveBtn.addEventListener('click', function() {
    const content = textInput.value.trim();
    if (content) {
      saveToClipboard(content);
      textInput.value = '';
    }
  });
  
  // 回车保存（当焦点在文本框时）
  textInput.addEventListener('keypress', function(e) {
    if (e.key === 'Enter' && !e.shiftKey) {
      e.preventDefault();
      const content = textInput.value.trim();
      if (content) {
        saveToClipboard(content);
        textInput.value = '';
      }
    }
  });
  
  // 清空历史按钮事件
  clearBtn.addEventListener('click', function() {
    if (confirm('确定要清空所有历史记录吗？')) {
      clearClipboardHistory();
    }
  });
  
  // 搜索框事件
  searchInput.addEventListener('input', function() {
    loadClipboardHistory(this.value);
  });
  
  // 测试 Ctrl+Shift-1 功能按钮事件
  testAlt1Btn.addEventListener('click', function() {
    handleClipboardOperation();
  });
  
  // 测试 Ctrl+Shift-2 功能按钮事件
  testAlt2Btn.addEventListener('click', function() {
    chrome.runtime.sendMessage({
      action: "resetClipboardData"
    }, function(response) {
      if (response.status === "success") {
        showNotification('数据已重置');
        // 清空显示的商品ID
        currentProductId.textContent = '未设置';
      }
    });
  });
  
  // 显示保存的商品ID按钮事件
  showProductIdBtn.addEventListener('click', function() {
    getCurrentProductId();
  });
  
  // 显示保存内容按钮事件
  showSavedContentBtn.addEventListener('click', function() {
    showSavedContentInPopup();
  });
  
  // 保存测试商品ID按钮事件
  saveTestProductIdBtn.addEventListener('click', function() {
    const productId = testProductIdInput.value.trim();
    if (productId) {
      saveTestProductId(productId);
    }
  });
  
  // 清除测试商品ID按钮事件
  clearTestProductIdBtn.addEventListener('click', function() {
    clearTestProductId();
  });
  
  // 日志开关切换事件
  debugModeToggle.addEventListener('change', function() {
    const debugMode = this.checked;
    toggleDebugMode(debugMode);
  });
  
  // 监听来自 background 的消息
  chrome.runtime.onMessage.addListener((request, sender, sendResponse) => {
    if (request.action === "handleClipboardOperation") {
      handleClipboardOperation();
      sendResponse({status: "success"});
    } else if (request.action === "clipboardDataReset") {
      // 重置数据时更新界面
      currentProductId.textContent = '未设置';
      showNotification('数据已重置');
      sendResponse({status: "success"});
    }
  });
  
  // 保存内容到自定义粘贴板
  function saveToClipboard(content) {
    chrome.runtime.sendMessage({
      action: "saveToClipboard",
      content: content
    }, function(response) {
      if (response.status === "success") {
        // 重新加载历史记录
        loadClipboardHistory();
      }
    });
  }
  
  // 加载粘贴板历史记录
  function loadClipboardHistory(searchTerm = '') {
    chrome.runtime.sendMessage({
      action: "getClipboardHistory"
    }, function(response) {
      displayHistory(response.history || [], searchTerm);
    });
  }
  
  // 显示历史记录
  function displayHistory(history, searchTerm) {
    // 过滤搜索结果
    if (searchTerm) {
      history = history.filter(item => 
        item.toLowerCase().includes(searchTerm.toLowerCase())
      );
    }
    
    // 清空列表
    historyList.innerHTML = '';
    
    if (history.length === 0) {
      const emptyItem = document.createElement('li');
      emptyItem.className = 'empty-history';
      emptyItem.innerHTML = '<p>' + (searchTerm ? '没有找到匹配的内容' : '暂无历史记录') + '</p>';
      historyList.appendChild(emptyItem);
      return;
    }
    
    // 添加历史记录项
    history.forEach((item, index) => {
      const listItem = document.createElement('li');
      listItem.className = 'history-item';
      
      // 截取内容显示
      let displayContent = item;
      if (displayContent.length > 100) {
        displayContent = displayContent.substring(0, 100) + '...';
      }
      
      listItem.innerHTML = `
        <div class="item-content">${escapeHtml(displayContent)}</div>
        <div class="item-actions">
          <button class="action-btn copy-btn" data-content="${escapeHtml(item)}">复制</button>
          <button class="action-btn delete-btn" data-index="${index}">删除</button>
        </div>
      `;
      
      historyList.appendChild(listItem);
    });
    
    // 添加事件监听器
    document.querySelectorAll('.copy-btn').forEach(btn => {
      btn.addEventListener('click', function() {
        const content = this.getAttribute('data-content');
        copyFromClipboard(content);
      });
    });
    
    document.querySelectorAll('.delete-btn').forEach(btn => {
      btn.addEventListener('click', function() {
        const index = this.getAttribute('data-index');
        // 注意：由于我们无法直接从存储中删除单个项目，这里我们只从显示中移除
        // 在实际应用中，您可能需要重新设计存储结构
        if (confirm('确定要删除此项吗？')) {
          this.closest('.history-item').remove();
        }
      });
    });
  }
  
  // 从自定义粘贴板复制内容
  function copyFromClipboard(content) {
    chrome.runtime.sendMessage({
      action: "copyFromClipboard",
      content: content
    }, function(response) {
      if (response.status === "success") {
        // 显示复制成功的提示
        showNotification('内容已复制到粘贴板');
      }
    });
  }
  
  // 清空粘贴板历史记录
  function clearClipboardHistory() {
    chrome.runtime.sendMessage({
      action: "clearClipboardHistory"
    }, function(response) {
      if (response.status === "success") {
        loadClipboardHistory();
        showNotification('历史记录已清空');
      }
    });
  }
  
  // 处理剪贴板操作（主要逻辑）
  async function handleClipboardOperation() {
    try {
      // 显示通知
      showNotification('正在处理剪贴板内容...');
      
      // 读取剪贴板内容
      const clipboardContent = await navigator.clipboard.readText();
      console.log("读取剪贴板内容", { clipboardContent });
      
      // 检查剪贴板是否为空
      if (!clipboardContent || clipboardContent.trim() === "") {
        showNotification("剪贴板为空，不进行处理");
        return;
      }
      
      // 检查是否包含"商品id"前缀
      if (clipboardContent.startsWith("商品id")) {
        // 如果已经是以"商品id"开头，则不做任何处理
        showNotification('内容已包含商品id前缀，不做处理');
        return;
      }
      
      // 检查是否包含"视频标题"前缀
      if (clipboardContent.startsWith("视频标题")) {
        // 如果已经是以"视频标题"开头，则不做任何处理
        showNotification('内容已包含视频标题前缀，不做处理');
        return;
      }
      
      // 检查是否为纯数字且至少10位
      const isPureNumber = /^\d{10,}$/.test(clipboardContent);
      console.log("检查是否为纯数字", { isPureNumber, content: clipboardContent });
      
      if (isPureNumber) {
        // 是纯数字，添加"商品id"前缀并保存
        const productId = "商品id" + clipboardContent;
        
        // 保存商品ID到存储
        await new Promise((resolve, reject) => {
          chrome.storage.local.set({savedProductId: productId}, function() {
            if (chrome.runtime.lastError) {
              reject(chrome.runtime.lastError);
            } else {
              resolve();
            }
          });
        });
        
        // 将处理后的内容写回剪贴板
        await navigator.clipboard.writeText(productId);
        showNotification('商品ID已保存: ' + productId);
        getCurrentProductId(); // 更新显示的商品ID
      } else {
        // 不是纯数字，检查是否包含视频标题信息
        console.log("内容不是纯数字，处理为视频标题");
        
        // 获取之前保存的商品ID
        const result = await new Promise((resolve, reject) => {
          chrome.storage.local.get(['savedProductId'], function(result) {
            if (chrome.runtime.lastError) {
              reject(chrome.runtime.lastError);
            } else {
              resolve(result);
            }
          });
        });
        
        const savedProductId = result.savedProductId || "";
        console.log("获取保存的商品ID", { savedProductId });
        
        if (savedProductId) {
          // 有保存的商品ID，拼接视频标题，添加后缀"～%N"
          const videoTitle = "视频标题" + clipboardContent + "～%N";
          const combinedContent = savedProductId + videoTitle;
          
          // 将拼接后的内容写回剪贴板
          await navigator.clipboard.writeText(combinedContent);
          showNotification('拼接成功: ' + combinedContent);
        } else {
          // 没有保存的商品ID，只添加视频标题前缀和后缀"～%N"
          const videoTitle = "视频标题" + clipboardContent + "～%N";
          
          // 将处理后的内容写回剪贴板
          await navigator.clipboard.writeText(videoTitle);
          showNotification('视频标题已保存: ' + videoTitle);
        }
      }
    } catch (error) {
      console.error("处理剪贴板内容时出错", error);
      showNotification('处理剪贴板内容时出错: ' + error.message);
    }
  }
  
  // 切换日志模式
  function toggleDebugMode(debugMode) {
    chrome.runtime.sendMessage({
      action: "toggleDebugMode",
      debugMode: debugMode
    }, function(response) {
      if (response.status === "success") {
        showNotification(debugMode ? '日志已开启' : '日志已关闭');
        updateDebugModeStatus(debugMode);
      }
    });
  }
  
  // 获取日志模式状态
  function getDebugModeStatus() {
    chrome.runtime.sendMessage({
      action: "getDebugMode"
    }, function(response) {
      updateDebugModeStatus(response.debugMode);
      debugModeToggle.checked = response.debugMode;
    });
  }
  
  // 更新日志模式状态显示
  function updateDebugModeStatus(debugMode) {
    debugModeStatus.textContent = debugMode ? '已开启' : '已关闭';
    debugModeStatus.className = debugMode ? 'status-on' : 'status-off';
  }
  
  // 获取当前保存的商品ID
  function getCurrentProductId() {
    chrome.runtime.sendMessage({
      action: "getSavedProductId"
    }, function(response) {
      if (response.productId) {
        currentProductId.textContent = response.productId;
        currentProductId.title = response.productId; // 鼠标悬停时显示完整内容
      } else {
        currentProductId.textContent = '未设置';
      }
    });
  }
  
  // 保存测试商品ID
  function saveTestProductId(productId) {
    const fullProductId = productId.startsWith("商品id") ? productId : "商品id" + productId;
    
    chrome.runtime.sendMessage({
      action: "saveTestProductId",
      productId: fullProductId
    }, function(response) {
      if (response.status === "success") {
        showNotification('测试商品ID已保存');
        getCurrentProductId(); // 更新显示的商品ID
      }
    });
  }
  
  // 清除测试商品ID
  function clearTestProductId() {
    chrome.runtime.sendMessage({
      action: "clearTestProductId"
    }, function(response) {
      if (response.status === "success") {
        showNotification('测试商品ID已清除');
        currentProductId.textContent = '未设置';
      }
    });
  }
  
  // 转义HTML特殊字符
  function escapeHtml(text) {
    const map = {
      '&': '&amp;',
      '<': '&lt;',
      '>': '&gt;',
      '"': '&quot;',
      "'": '&#039;'
    };
    
    return text.replace(/[&<>"']/g, function(m) { return map[m]; });
  }
});